package cn.dapeng.other;

/**
 * @BelongProject study
 * @BelongPackage cn.dapeng.other
 * @Description TODO
 * @ClassName IntegerConvertBinary
 * @Author xupenghong
 * @Date 2024/8/22 15:23
 * @Version 1.0.0
 * <p>
 * 如果一个数是负数，那么它最后一位就是1   正负数变换， 就是取反+1
 */
public class IntegerConvertBinary {

    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(-1));
        System.out.println(intToBinary(-1));

        System.out.println(oppositeNumber(-2));

        System.out.println(remainder(124, 32));
        System.out.println(124 % 32);
    }

    public static String intToBinary(int num) {
        StringBuilder sb = new StringBuilder();
        for (int i = 31; i >= 0; i--) {
            sb.append((num & (1 << i)) == 0 ? "0" : "1");
        }
        return sb.toString();
    }


    /**
     * 求给定数的相反数
     *
     * @return
     */
    public static int oppositeNumber(int num) {
        return ~num + 1;
    }


    /**
     * 求一个数除以另外一个数的余数
     *
     * @return
     * @mod ：除数必须是2的N次方
     */
    public static int remainder(int num, int mod) {
        return num & (mod - 1);
    }

}
